import env from '@/config/env'

/**
 * 日期格式化函数
 * @param date 日期对象
 * @param format 日期格式，默认为 YYYY-MM-DD HH:mm:ss
 */
export const formatDate = (date: Date, format = 'YYYY-MM-DD HH:mm:ss') => {
  // 获取年月日时分秒，通过 padStart 补 0
  const year = String(date.getFullYear())
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  const hours = String(date.getHours()).padStart(2, '0')
  const minutes = String(date.getMinutes()).padStart(2, '0')
  const seconds = String(date.getSeconds()).padStart(2, '0')

  // 返回格式化后的结果
  return format
    .replace('YYYY', year)
    .replace('MM', month)
    .replace('DD', day)
    .replace('HH', hours)
    .replace('mm', minutes)
    .replace('ss', seconds)
}

/**
 * 将 Unix 时间戳转换为指定格式的字符串时间
 * @param {number} timestamp - Unix 时间戳（秒级）
 * @param {string} format - 日期格式，例如 "yyyy-MM-dd HH:mm:ss"
 * @returns {string} - 格式化后的日期时间字符串
 */
export function formatTimestamp(timestamp: number, format: string): string {
  const date = new Date(timestamp * 1000) // 将秒级时间戳转换为毫秒

  // 定义替换规则
  const formatMap = {
    yyyy: date.getFullYear(),
    MM: String(date.getMonth() + 1).padStart(2, '0'),
    dd: String(date.getDate()).padStart(2, '0'),
    HH: String(date.getHours()).padStart(2, '0'),
    mm: String(date.getMinutes()).padStart(2, '0'),
    ss: String(date.getSeconds()).padStart(2, '0'),
  }

  // 使用正则替换格式中的关键字
  return format.replace(/yyyy|MM|dd|HH|mm|ss/g, (match) =>
    String(formatMap[match as keyof typeof formatMap]),
  )
}

/**
 * 图片地址拼接函数
 * @param url 图片地址
 */
export function ImageAddHttp(url: string): string {
  if (url && !url.startsWith('http')) {
    return `${env.baseUrl}${url}`
  }
  return url
}


export function formatTime(timeStamp: number): string {
  const now = new Date().getTime(); // 当前时间戳（毫秒）
  const diff = now - timeStamp * 1000; // 时间差（毫秒）

  // 刚刚：5分钟内
  if (diff < 5 * 60 * 1000) {
    return "刚刚";
  }

  // 多少分钟前：1小时内
  if (diff < 60 * 60 * 1000) {
    const minutes = Math.floor(diff / (60 * 1000));
    return `${minutes}分钟前`;
  }

  // 多少小时前：12小时内
  if (diff < 12 * 60 * 60 * 1000) {
    const hours = Math.floor(diff / (60 * 60 * 1000));
    return `${hours}小时前`;
  }

  // 超出12小时：返回日期（按需格式化）
  const date = new Date(timeStamp * 1000);
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, "0");
  const day = String(date.getDate()).padStart(2, "0");
  const hours = String(date.getHours()).padStart(2, "0");
  const minutes = String(date.getMinutes()).padStart(2, "0");
  return `${year}-${month}-${day} ${hours}:${minutes}`;
}